\begin{Exercise}[title={Cat},difficulty=1]
\label{ex:cat}
\Question \label{ex:cat q1} 编写一个程序，模仿 Unix 的 \prog{cat} 程序。
对于不知道这个程序的人来说，下面的调用显示了文件 \dir{blah} 的内容：
\begin{display}
\pr cat blah
\end{display}

\Question 使其支持 \-n 开关，用于输出每行的行号。

\Question 上面问题中，\ref{q:cat} 提供的解决方案存在一个~Bug。
你能定位并修复它吗？
\end{Exercise}

\begin{Answer}
\Question 下面是 \prog{cat} 的实现，同样支持 \-n 输出每行的行号。
\label{q:cat}
\lstinputlisting[label=src:cat,caption=cat 程序]{ex-beyond/src/cat.go}
\showremarks

\Question 当最后一行不包括换行符时，这个~Bug 就会出现。
更糟糕的情况是，当输入只有一行且没有换行符的时候，什么也不显示。
下面的程序是一个更好的解决方案。
\lstinputlisting[label=src:cat2,caption=一个更好的~cat 程序]{ex-beyond/src/cat2.go}
\end{Answer}
